/**
 * Author:   Lynn
 * Date:     2022/7/31 17:44
 */
package com.wu.leetcode.leetcode160;

/**
 * @author Lynn
 * @create 2022/7/31
 */
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
//        int aSize = 1;
//        int bSize = 1;
//
//        ListNode tempA = headA;
//        ListNode tempA1 = headA;
//        ListNode tempB = headB;
//        ListNode tempB1 = headB;
//
//        if (headA == null || headB == null) {
//            return null;
//        }
//        while (tempA1.next != null) {
//            aSize++;
//            tempA1 = tempA1.next;
//        }
//        while (tempB1.next != null) {
//            bSize++;
//            tempB1 = tempB1.next;
//        }
//        int count;
//        if (aSize > bSize) {
//            count = aSize - bSize;
//            while (count > 0) {
//                tempA = tempA.next;
//                count--;
//            }
//        } else if (aSize < bSize) {
//            count = bSize - aSize;
//            while (count > 0) {
//                tempB = tempB.next;
//                count--;
//            }
//        }
//        while (tempA != null && tempB != null) {
//            if (tempA == tempB) {
//                return tempA;
//            }
//            tempA = tempA.next;
//            tempB = tempB.next;
//        }
//        return tempA;

        ListNode a = headA;
        ListNode b = headB;
        while (a != b) {
            if (a == null) {
                a = headB;
            } else {
                a = a.next;
            }
            if (b == null) {
                b = headA;
            } else {
                b = b.next;
            }
        }
        return a;
    }

    public static void main(String[] args) {
        ListNode listNode1 = new ListNode(4);
        ListNode listNode2 = new ListNode(1);
        ListNode listNode3 = new ListNode(8);
        ListNode listNode4 = new ListNode(4);
        ListNode listNode5 = new ListNode(5);
        ListNode listNode6 = new ListNode(5);
        ListNode listNode7 = new ListNode(6);
        ListNode listNode8 = new ListNode(1);

        listNode1.next = listNode2;
        listNode2.next = listNode3;
        listNode3.next = listNode4;
        listNode4.next = listNode5;
        listNode6.next = listNode7;
        listNode7.next = listNode8;
//        listNode8.next = listNode3;
        Solution solution = new Solution();
        ListNode intersectionNode = solution.getIntersectionNode(listNode1, listNode6);
        System.out.println(intersectionNode.val);
    }
}

class ListNode {
    int val;
    ListNode next;

    ListNode(int x) {
        val = x;
        next = null;
    }
}
